                          VP Real number Instructions

==================== Note =================================================

Abbreviations and conventions:

  * Real numbers are 64 bit
  * Integer numbers are 32 bit
  * <vX> : X. item in the stack
  * Par  : Parameter
  * Dsc  : Instruction description in C syntax
  * If the parameter is a non zero constant then this will be
    the last operand for all instructions

==================== Base =================================================

[40] Negation: '.~'
  Dsc: <v1>=-<v1>

[41] Addition: ".+"
  Dsc: <v1>=<v2>+<v1>

[42] Subtraction: ".-"
  Dsc: <v1>=<v2>-<v1>

[43] Multiplication: ".*"
  Dsc: <v1>=<v2>*<v1>

[44] Division: "./"
  Dsc: <v1>=<v2>/<v1>

[45] Remainder: ".%"
  Dsc: <v1>=fmod(<v2>,<v1>)

==================== Relational ===========================================

[46] Not null: ".?:"
  Dsc: <v1>=(<v1>!=0)

[47] Is null: ".?0"
  Dsc: <v1>=(<v1>==0)

[48] Equal: ".=="
  Dsc: <v1>=(<v2>==<v1>)

[49] Not equal: ".!="
  Dsc: <v1>=(<v2>!=<v1>)

[4A] Greater: ".>"
  Dsc: <v1>=(<v2> > <v1>)

[4B] Greater or equal: ".>="
  Dsc: <v1>=(<v2> >= <v1>)

[4C] Less: ".<"
  Dsc: <v1>=(<v2> < <v1>)

[4D] Less or equal: ".<="
  Dsc: <v1>=(<v2> <= <v1>)

==================== Conversion ===========================================

[4E] Convert unsigned integer to real: "#>."
  Dsc: <v1>=(double)(unsigned long int)<v1>

[4F] Convert signed integer to real: "X>."
  Dsc: <v1>=(double)(signed long int)<v1>

[50] Convert real number to signed integer: ".>X"
  Dsc: <v1>=(signed long int)<v1>

[51] 2 based extraction of real number: ".X2"
  Dsc: <v1/old>==<v2/new>*pow(2.0,<v1/new>)
       where <v1/new> is signed integer number

[52] 10 based extraction of real number: ".X10"
  Dsc: <v1/old>==<v2/new>*pow(10.0,<v1/new>)
       where <v1/new> is signed integer number

[53] Scale: ".SCA"
  Dsc: <v1>=<v2>*pow(2.0,<v1>)
       where <v1> is signed integer number

[54] Round: ".ROU"
  Par: 0: Normal (to the closest integer)
       1: Down (to minus infinite)
       2: Up (to plus infinite)
       3: Zero
       *: The original value itself

[55] Split real number into integer and fraction parts: ".PAR"
  Dsc: <v1/old>==<v2/new>+<v1/new>
       where <v2/new> is an integer real number

[56] Absolute value: ".ABS"
  Dsc: <v1>=fabs(<v1>)

[57] Square root: ".SQT"
  Dsc: <v1>=sqrt(<v1>)

==================== Exp and Log ==========================================

[58] Exponential: ".EXP"
  Dsc: <v1>=pow(<v2>,<v1>)

[59] Nth root: ".NRT"
  Dsc: <v1>=pow(<v2>,1.0/<v1>)

[5A] Logarithm: ".LOG"
  Dsc: <v1>=log(<v2>)/log(<v1>)

[5B] 10 based exponential: ".E10"
  Dsc: <v1>=pow(10.0,<v1>)

[5C] 'e' based exponential: ".EE"
  Dsc: <v1>=exp(<v1>)

[5D] 10 based logarithm: ".LG"
  Dsc: <v1>=log10(<v1>)

[5E] 'e' based logarithm: ".LN"
  Dsc: <v1>=log(<v1>)

==================== Trigonometric ========================================

[5F] Sinus: ".SIN"
  Dsc: <v1>=sin(<v1>)

[60] Cosinus: ".COS"
  Dsc: <v1>=cos(<v1>)

[61] Tangent: ".TAN"
  Dsc: <v1>=tan(<v1>)

[62] Arcus sinus: ".ASI"
  Dsc: <v1>=asin(<v1>)

[63] Arcus cosinus: ".ACO"
  Dsc: <v1>=acos(<v1>)

[64] Arcus tangent: ".ATA"
  Dsc: <v1>=atan(<v1>)

==================== Constant =============================================

[65] Value of PI: ".PI"
  Dsc: <v1>=3.14159...

===========================================================================
